﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TPDiseño.Clases_de_Entidad
{
    public class Puesto
    {            
        //Atributos
        private int id;
        private string cod_puesto;
        private string nombre;
        private string descripcion;        
        private List<PuestoCompetencia> competenciasPonderadas;
        private Empresa empresa;

        // Propiedades
        public int _id
        {
            get
            {
                return id;
            }
            set
            {
                id = value;
            }

        }

        public string _cod_puesto
        {
            get
            {
                return cod_puesto;
            }
            set
            {
                cod_puesto = value;
            }

        }

        public string _nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                nombre = value;
            }

        }

        public string _descripcion
        {
            get
            {
                return descripcion;
            }
            set
            {
                descripcion = value;
            }

        }
       
        public List<PuestoCompetencia> _competenciasPonderadas
        {
            get
            {
                return competenciasPonderadas;
            }
            set
            {
                competenciasPonderadas = value;
            }

        }
        public Empresa _empresa
        {
            get
            {
                return empresa;
            }
            set
            {
                empresa = value;
            }

        }

        // Constructores
        public Puesto()
        {
        }

        public Puesto(string unCod_puesto, string unNombre, string unaDescripcion, Empresa unaEmpresa)
        {
            this.cod_puesto = unCod_puesto;
            this.nombre = unNombre;
            this.descripcion = unaDescripcion;
            
            this.empresa = unaEmpresa;
            this._competenciasPonderadas =  new List<PuestoCompetencia>();
        }

        public Puesto(int unId, string unCod_puesto, string unNombre, string unaDescripcion, Empresa unaEmpresa, List<PuestoCompetencia> unaListaCompetenciasPonderadas)
            : this(unCod_puesto, unNombre, unaDescripcion, unaEmpresa)
        {

            // Setei las cmptencias ponderadas
            this.competenciasPonderadas = unaListaCompetenciasPonderadas;
            this.id = unId;

        }

        public Puesto(int unId, string unCod_puesto, string unNombre, string unaDescripcion, Empresa unaEmpresa)
            : this(unCod_puesto, unNombre, unaDescripcion,unaEmpresa)
        {

            // Seteo el Id
            this.id = unId;

        }

        //[?]
        public Puesto nuevo(string cod_puesto, string nombre, string descripcion, Empresa empresa)
        {
            Puesto puestoNuevo = new Puesto(cod_puesto,nombre,descripcion,empresa); 
            //NUEVO
            
                  
            return puestoNuevo ;
        }
        
        public void add(PuestoCompetencia PuestoComp)
        {
            this.competenciasPonderadas.Add(PuestoComp);    
        }
        
        public string toString()
        {

            string listaCompetenciasPonderadas;

            foreach (PuestoCompetencia unaCompetenciaPonderada in this.competenciasPonderadas)
            {
                //listaCompetenciasPonderadas = listaCompetenciasPonderadas.counaCompetenciaPonderada.ToString();
            }

            return this.cod_puesto + this.descripcion + this.empresa;
        }

        public Puesto clonarNivel()
        {
                   
            // Retorno una copia a nivel (no incluye composicion estructural) de la instancia actual
            return new Puesto(this.id, this.cod_puesto, this.nombre, this.descripcion, this.empresa);
        }
    }
    
}
